It may be necessary to synchronize the operation of two or more systems such that the two applications or systems perform equivalent functions, store identical or equivalent repositories of information, or produce equivalent output in response to equivalent input. In such cases, each system may comprise a combination of one or more software applications, computer systems, other computerized entities, other electronic entities, or one or more components of one or more communications infrastructures.
Such synchronization may be necessary, for example, when migrating users from a legacy software system to a new, more modern, software system, a process that may require both systems to be run concurrently, simultaneously, or in parallel. Synchronization may also be necessary in other situations, such as when comparing two or more computer platforms or when measuring relative efficiency of programs that perform similar functions by means different algorithms.
Synchronization may comprise functions like synchronizing data models that each represent a data structure of one of the systems, resolving inconsistencies in production data maintained by each system, or ensuring that, when fed identical or analogous input, a component of one system and an analogous component of an other system correctly produce identical, similar, or analogous output.
One means of synchronization is a mechanism in which a monitoring entity detects revisions to production data stored by one or more of the systems being synchronized or detects revisions to a data model that represents a data structure associated with one of the systems being synchronized. This monitoring entity may be a hardware or software component of one of the systems being synchronized or it may be a distinct intermediary hardware or software entity that monitors the systems being synchronized.
Such a monitoring entity may respond to a detection of a revision to a first system by making a corresponding change to one or more other systems in order to synchronize the operation of or the production data of the one or more other systems with the revised production data of the first system. The details of the corresponding change may be determined by one or more synchronization rules that tell the monitoring entity how to respond to a certain type of revision to the first system in order to resynchronize the one or more other systems to the revised first system. A synchronization rule may also describe how to translate a change to a data model or to production data of a first system into an analogous change to a data model or to production data of a second system. Such translations may not be trivial or obvious, especially when a data model of the first system differs in significant ways from a data model of the second system.
These synchronization rules may be difficult to maintain with accuracy. Components of each system may be added, removed, patched, or otherwise modified in different ways and at different times, and each modification may necessitate a revision to one or more synchronization procedures. If the rules are not promptly updated to accommodate these revised procedures, a rule may not identify a correct synchronization procedure when a monitoring entity identifies a need for synchronization. When synchronizing complex systems that comprise large numbers of rules, maintaining those rules may be complicated, vulnerable to error, and resource-intensive. There is thus a need for a way to automatically audit synchronization rules in order to ensure that the rules are accurately and promptly updated and that the rules continue to correctly synchronize the production data of the first and second systems.